# -*- coding: utf-8 -*-
"""
项目名称：NoSql_kafka_project
文件名称：config.py.py
创建时间：2025-06-05 16:19:18

系统用户：Administrator
作　　者：無以菱
联系邮箱：huangjing2001.guet@qq.com
功能描述：
- 功能：集中管理所有组件的配置参数
- 包含：Kafka、HBase、Redis、Spark、Flask等配置
"""

# Kafka配置
# 用于管理Kafka消息队列相关的配置参数
KAFKA_CONFIG = {
    # Kafka集群服务器地址列表，包含多个节点以实现高可用
    'bootstrap_servers': ['192.168.10.10:9092', '192.168.10.11:9092', '192.168.10.12:9092'],
    # 消息主题名称，用于存储实时订单数据
    'topic': 'real_time_orders',
    # 消费者组ID，用于标识消费者组，确保消息只被处理一次
    'group_id': 'order_processor'
}

# HBase配置
# 用于管理HBase数据库相关的配置参数
HBASE_CONFIG = {
    # HBase服务器主机地址
    'host': '192.168.10.10',
    # HBase Thrift服务端口
    'port': 9090,
    # 存储订单数据的表名
    'table_name': 'real_time_orders_table',
    # 列族名称，HBase表的基本组织单元
    'column_family': 'cf',
    # 连接超时时间（毫秒）
    'timeout': 5000
}

# Redis配置
# 用于管理Redis缓存相关的配置参数
REDIS_CONFIG = {
    # Redis服务器主机地址
    'host': 'localhost',
    # Redis服务端口
    'port': 6379,
    # 使用的数据库编号
    'db': 0,
    # 键名前缀，用于区分不同应用的数据
    'key_prefix': 'payment_',
    # 存储统计结果的键名
    'stats_key': 'payment_stats'
}

# Spark配置
# 用于管理Spark分析引擎相关的配置参数
SPARK_CONFIG = {
    # Spark应用名称，显示在Spark UI中
    'app_name': 'HBaseToRedis',
    # Spark运行模式，local[*]表示使用所有可用CPU核心在本地运行
    'master': 'local[*]',
    # 数据分析间隔时间（秒），定义了多久执行一次数据分析
    'analysis_interval': 5  # 分析间隔（秒）
}

# Flask配置
# 用于管理Flask Web应用相关的配置参数
FLASK_CONFIG = {
    # Web服务器监听地址，0.0.0.0表示监听所有网络接口
    'host': '0.0.0.0',
    # Web服务器端口号
    'port': 5000,
    # 是否启用调试模式，生产环境应设为False
    'debug': True
}

# 日志配置
# 用于管理系统日志相关的配置参数
LOG_CONFIG = {
    # 日志级别，INFO表示记录一般信息、警告和错误
    'level': 'INFO',
    # 日志格式，包含时间、名称、级别和消息
    'format': '%(asctime)s - %(name)s - %(levelname)s - %(message)s'
}

# 支付方式配置
# 系统支持的支付方式列表，用于生成模拟订单数据
PAYMENT_TYPES = ["支付宝", "微信", "银行卡"]

# 订单生成配置
# 用于管理订单生成器相关的配置参数
ORDER_CONFIG = {
    # 订单金额最小值（元）
    'min_amount': 10,
    # 订单金额最大值（元）
    'max_amount': 1000,
    # 订单生成时间间隔（秒），定义了多久生成一条新订单
    'generation_interval': 1  # 生成间隔（秒）
}

if __name__ == "__main__":
    # 打印配置信息用于调试
    import json

    print("当前系统配置:")
    print("-" * 50)

    for section, config in [
        ("Kafka配置", KAFKA_CONFIG),
        ("HBase配置", HBASE_CONFIG),
        ("Redis配置", REDIS_CONFIG),
        ("Spark配置", SPARK_CONFIG),
        ("Flask配置", FLASK_CONFIG),
        ("日志配置", LOG_CONFIG),
        ("支付方式", PAYMENT_TYPES),
        ("订单生成配置", ORDER_CONFIG)
    ]:
        print(f"\n{section}:")
        if isinstance(config, dict):
            for key, value in config.items():
                print(f"  {key}: {value}")
        else:
            print(f"  {config}")
    print("\n配置检查完成")
